package com.bee.health.util;

import android.view.View;
import android.content.Context;
import android.graphics.Paint;
 
public class MiscUtil{
	
	    public static int measure(int measureSpec, int defaultSize) {
	        int result = defaultSize;
	        int specMode = View.MeasureSpec.getMode(measureSpec);
	        int specSize = View.MeasureSpec.getSize(measureSpec);

	        if (specMode == View.MeasureSpec.EXACTLY) {
	            result = specSize;
	        } else if (specMode == View.MeasureSpec.AT_MOST) {
	            result = Math.min(result, specSize);
	        }
	        return result;
	    }

	    /**
	     * dip 转换成px
	     *
	     * @param dip
	     * @return
	     */
	    public static int dipToPx(Context context, float dip) {
	        float density = context.getResources().getDisplayMetrics().density;
	        return (int) (dip * density + 0.5f * (dip >= 0 ? 1 : -1));
	    }

	    /**
	     * 获取数值精度格式化字符串
	     *
	     * @param precision
	     * @return
	     */
	    public static String getPrecisionFormat(int precision) {
	        return "%." + precision + "f";
	    }

	    /**
	     * 反转数组
	     *
	     * @param arrays
	     * @param <T>
	     * @return
	     */
	    public static <T> T[] reverse(T[] arrays) {
	        if (arrays == null) {
	            return null;
	        }
	        int length = arrays.length;
	        for (int i = 0; i < length / 2; i++) {
	            T t = arrays[i];
	            arrays[i] = arrays[length - i - 1];
	            arrays[length - i - 1] = t;
	        }
	        return arrays;
	    }

	    /**
	     * 测量文字高度
	     * @param paint
	     * @return
	     */
	    public static float measureTextHeight(Paint paint) {
	        Paint.FontMetrics fontMetrics = paint.getFontMetrics();
	        return (Math.abs(fontMetrics.ascent) - fontMetrics.descent);
	    }
}
